﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AnguaRPGEngine.Library.Packages;
using AnguaRPGEngine.Library.Systems;

namespace AnguaRPGEngine.Library.Interfaces
{
    public interface IARPGEModule
    {
        // Properties
        List<IPart> Counters { get; }
        string Description { get; }
        string FileFilter { get; }
        string GameName { get; }
        Guid ID { get; }
        string Name { get; }
        bool GameIsLoaded { get; }

        // Methods
        string AddCharacter(string SerializedCharacter);
        DialogResult EditBooks();
        bool GameAllowed(Guid GameGuid);
        Form GetPlayerForPC(Form parent);
        Form GetPlayersForGM(Form parent);
        void LoadGame();
        void EditGame(Form parent);
        void NewGame(Form parent);
        void SaveGame();
        void SaveGame(bool saveAs);
        bool ImportCharacter(string FileSpec);
        void LoadCharacter();
        void NewCharacter(Form parent);
        void SaveCharacter();
        void SaveCharacter(bool saveAs);
        string UpdateCharacter(string SerializedCharacter);
        bool PasswordMatch(string Password);
        bool PlayerAllowed(Guid PlayerGuid);
        void ProcessPackage(BufferPackage package);
        void SetRulesMenu(ref ToolStripMenuItem tsmiRules);
        MapFileClass GetCurrentMap();
    }
}
